
# 自定义的装饰器:判断是否登录
from django.http import JsonResponse


def my_decorator(view):
    def wapper(request, *args, **kwargs):
        if request.user.is_authenticated:
            # 如果用户登录, 则进入这里,正常执行
            return view(request, *args, **kwargs)
        else:
            # 如果用户未登录,则进入这里,返回400的状态码
            return JsonResponse({'errno': 4101, 'errmsg': '未登录'})

    return wapper


# 自定义的Mixin扩展类
class LoginRequiredMixin(object):

    # 重写的 as_view 方法
    @classmethod
    def as_view(cls, *args,**kwargs):
        view = super().as_view(*args,**kwargs)

        return my_decorator(view)

